home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-10-20 | 26.8 KB | 606 lines | [TEXT/MPS ] |
-
- {
- Created: Tuesday, August 13, 1991 at 4:31 PM
- ImageCompression.p
- Pascal Interface to the Macintosh Libraries
-
- Copyright Apple Computer, Inc. 1991
- All rights reserved
- }
-
-
- {$IFC UNDEFINED UsingIncludes}
- {$SETC UsingIncludes := 0}
- {$ENDC}
-
- {$IFC NOT UsingIncludes}
- UNIT ImageCompression;
- INTERFACE
- {$ENDC}
-
- {$IFC UNDEFINED UsingImageCompression}
- {$SETC UsingImageCompression := 1}
-
- {$I+}
- {$SETC ImageCompressionIncludes := UsingIncludes}
- {$SETC UsingIncludes := 1}
- {$IFC UNDEFINED UsingQuickDraw}
- {$I $$Shell(PInterfaces)QuickDraw.p}
- {$ENDC}
- {$IFC UNDEFINED UsingQDOffscreen}
- {$I $$Shell(PInterfaces)QDOffscreen.p}
- {$ENDC}
- {$IFC UNDEFINED UsingTypes}
- {$I $$Shell(PInterfaces)Types.p}
- {$ENDC}
- {$IFC UNDEFINED UsingComponents}
- {$I $$Shell(PInterfaces)Components.p}
- {$ENDC}
- {$IFC UNDEFINED UsingStandardFile}
- {$I $$Shell(PInterfaces)StandardFile.p}
- {$ENDC}
- {$SETC UsingIncludes := ImageCompressionIncludes}
-
- CONST
- gestaltCompressionMgr = 'icmp';
-
- { These are the bits that are set in the Component flags, and also in the codecInfo struct. }
-
- codecInfoDoes1 = $1; { codec can work with 1-bit pixels }
- codecInfoDoes2 = $2; { codec can work with 2-bit pixels }
- codecInfoDoes4 = $4; { codec can work with 4-bit pixels }
- codecInfoDoes8 = $8; { codec can work with 8-bit pixels }
- codecInfoDoes16 = $10; { codec can work with 16-bit pixels }
- codecInfoDoes32 = $20; { codec can work with 32-bit pixels }
- codecInfoDoesDither = $40; { codec can do ditherMode }
- codecInfoDoesStretch = $80; { codec can stretch to arbitrary sizes }
- codecInfoDoesShrink = $100; { codec can shrink to arbitrary sizes }
- codecInfoDoesMask = $200; { codec can mask to clipping regions }
-
- codecInfoDoesTemporal = $400; { codec can handle temporal redundancy }
-
- codecInfoDoesDouble = $800; { codec can stretch to double size exactly }
- codecInfoDoesQuad = $1000; { codec can stretch to quadruple size exactly }
- codecInfoDoesHalf = $2000; { codec can shrink to half size }
- codecInfoDoesQuarter = $4000; { codec can shrink to quarter size }
-
- codecInfoDoesRotate = $8000; { codec can rotate on decompress }
- codecInfoDoesHorizFlip = $10000; { codec can flip horizontally on decompress }
- codecInfoDoesVertFlip = $20000; { codec can flip vertically on decompress }
- codecInfoDoesSkew = $40000; { codec can skew on decompress }
- codecInfoDoesBlend = $80000; { codec can blend on decompress }
- codecInfoDoesWarp = $100000; { codec can warp arbitrarily on decompress }
- codecInfoDoesRecompress = $200000; { codec can recompress image without accumulating errors }
- codecInfoDoesSpool = $400000; { codec can spool image data }
-
- codecInfoDepth1 = $1; { compressed data at 1 bpp depth available }
- codecInfoDepth2 = $2; { compressed data at 2 bpp depth available }
- codecInfoDepth4 = $4; { compressed data at 4 bpp depth available }
- codecInfoDepth8 = $8; { compressed data at 8 bpp depth available }
- codecInfoDepth16 = $10; { compressed data at 16 bpp depth available }
- codecInfoDepth32 = $20; { compressed data at 32 bpp depth available }
- codecInfoDepth24 = $40; { compressed data at 24 bpp depth available }
- codecInfoDepth33 = $80; { compressed data at 1 bpp monochrome depth available }
- codecInfoDepth34 = $100; { compressed data at 2 bpp grayscale depth available }
- codecInfoDepth36 = $200; { compressed data at 4 bpp grayscale depth available }
- codecInfoDepth40 = $400; { compressed data at 8 bpp grayscale depth available }
- codecInfoStoresClut = $800; { compressed data can have custom cluts }
- codecInfoDoesLossless = $1000; { compressed data can be stored in lossless format }
-
- codecFlagUseImageBuffer = $1; { (input) allocate buffer for whole image on decompress sequence }
- codecFlagUseScreenBuffer = $2; { (input) allocate buffer for screen on decompress sequence for faster updates }
- codecFlagUpdatePrevious = $4; { (input) udate previous buffer on compress sequence }
- codecFlagNoScreenUpdate = $8; { (input) dont update screen, but do update image buffer if allocated }
- codecFlagWasCompressed = $10; { (input) hint to compressor that image was previously compressed }
- codecFlagDontOffscreen = $20; { (input) return error instead of automatically going offscreen }
- codecFlagUpdatePreviousComp = $40; { (input) udate previous buffer on compress sequence }
- codecFlagForceKeyFrame = $80; { (input) when sent to CompressSequenceFrame, forces that frame to be a key frame }
- codecFlagOnlyScreenUpdate = $100; { (input) only update screen from }
- codecFlagLiveGrab = $200; { (input) data being compressed is from live source (speed is critical) }
- codecFlagDontUseNewImageBuffer = $400; { (input) return error if image buffer is new or reallocated }
- codecFlagInterlaceUpdate = $800; { (input) use interlaced update }
-
-
- codecFlagUsedNewImageBuffer = $4000; { (output) indicates that image buffer was first used on this decompress sequence }
- codecFlagUsedImageBuffer = $8000; { (output) indicates that image buffer was used on this decompress sequence }
-
- codecErr = -8960; { the codec returned an error }
- noCodecErr = -8961; { the specified codec could not be found }
- codecUnimpErr = -8962; { this feature is not implemented by the specified codec }
- codecSizeErr = -8963;
- codecScreenBufErr = -8964; { the screen buffer could not be allocated }
- codecImageBufErr = -8965; { the image buffer could not be allocated }
- codecSpoolErr = -8966; { the compressed data must be in memory (spooling did not work) }
- codecAbortErr = -8967; { the operation was aborted by the progress proc }
- codecWouldOffscreenErr = -8968; { an offscreen access would have been used, but wasn't allowed because codecFlagDontOffscreen was set }
- codecBadDataErr = -8969; { compressed data was found to have inconsistencies }
- codecDataVersErr = -8970; { compressed data was of a format version that codec couldn't handle }
- codecConditionErr = -8972; { codec can not do requested operation }
- codecOpenErr = -8973; { the codec could not be opened }
-
- codecMinimumDataSize = 32768; { The minimum data size for spooling in or out data }
-
- compressorComponentType = 'imco'; { the type for "Components" which compress images }
- decompressorComponentType = 'imdc'; { the type for "Components" which decompress images }
-
- TYPE
- CompressorComponent = Component; { a Component which compresses images }
- DecompressorComponent = Component; { a Component which decompresses images }
- CodecComponent = Component; { a Component which decompresses or compresses images }
-
- CodecType = OSTYPE; { type descriptor for codecs i.e: 'appl','jpeg','rle ' }
-
- CodecFlags = INTEGER; { flags for codec manager calls }
-
- CodecQ = LONGINT;
- DataProcPtr = ProcPtr;
- FlushProcPtr = ProcPtr;
-
- CONST
- defaultDither = 0;
- forceDither = 1;
- suppressDither = 2;
-
- codecLosslessQuality = $400;
- codecMaxQuality = $3FF;
- codecMinQuality = $000;
- codecLowQuality = $100;
- codecNormalQuality = $200;
- codecHighQuality = $300;
-
- anyCodec = 0; { take first working codec of given type }
- bestSpeedCodec = -1; { take fastest codec of given type }
- bestFidelityCodec = -2; { take codec which is most accurate}
- bestCompressionCodec = -3; { take codec of given type that is most accurate }
-
- codecCompletionSource = 1; { asynchronous codec is done with source data }
- codecCompletionDest = 2; { asynchronous codec is done with destination data }
-
- TYPE
- CompletionProcPtr = ProcPtr;
-
- CONST
- codecProgressOpen = 0;
- codecProgressUpdatePercent = 1;
- codecProgressClose = 2;
-
- TYPE
- ProgressProcPtr = ProcPtr;
-
- ImageSequence = LONGINT;
-
- ProgressProcRecordPtr = ^ProgressProcRecord;
- ProgressProcRecord = RECORD
- progressProc: ProgressProcPtr;
- progressRefCon: LONGINT;
- END;
-
- CompletionProcRecordPtr = ^CompletionProcRecord;
- CompletionProcRecord = RECORD
- completionProc: CompletionProcPtr;
- completionRefCon: LONGINT;
- END;
-
- DataProcRecordPtr = ^DataProcRecord;
- DataProcRecord = RECORD
- dataProc: DataProcPtr;
- dataRefCon: LONGINT;
- END;
-
- FlushProcRecordPtr = ^FlushProcRecord;
- FlushProcRecord = RECORD
- flushProc: FlushProcPtr;
- flushRefCon: LONGINT;
- END;
-
-
- AlignmentProcPtr = ProcPtr;
-
- AlignmentProcRecordPtr = ^AlignmentProcRecord;
- AlignmentProcRecord = RECORD
- alignmentProc: AlignmentProcPtr;
- alignmentRefCon: LONGINT;
- END;
-
- DataRateParamsPtr = ^DataRateParams;
- DataRateParams = RECORD
- dataRate: LONGINT;
- dataOverrun: LONGINT;
- frameDuration: LONGINT;
- keyFrameRate: LONGINT;
- minSpatialQuality: CodecQ;
- minTemporalQuality: CodecQ;
- END;
-
-
- {
- The ImageDescription is private data which is produced when an image or sequence
- is compressed. It fully describes the format of the compressed data.}
-
- ImageDescriptionPtr = ^ImageDescription;
- ImageDescriptionHandle = ^ImageDescriptionPtr;
- ImageDescription = PACKED RECORD
- idSize: LONGINT; { total size of ImageDescription including extra data ( CLUTs and other per sequence data }
- cType: CodecType; { what kind of codec compressed this data }
- resvd1: LONGINT; { reserved for apple use }
- resvd2: INTEGER; { reserved for apple use }
- dataRefIndex: INTEGER; { set to zero }
- version: INTEGER; { which version is this data }
- revisionLevel: INTEGER; { what version of that codec did this }
- vendor: LONGINT; { whose codec compressed this data }
- temporalQuality: CodecQ; { what was the temporal quality factor }
- spatialQuality: CodecQ; { what was the spatial quality factor }
- width: INTEGER; { how many pixels wide is this data }
- height: INTEGER; { how many pixels high is this data }
- hRes: Fixed; { horizontal resolution }
- vRes: Fixed; { vertical resolution }
- dataSize: LONGINT; { if known, the size of data for this image descriptor }
- frameCount: INTEGER; { number of frames this description applies to }
- name: PACKED ARRAY [0..31] OF CHAR; { name of codec ( in case not installed ) }
- depth: INTEGER; { what depth is this data (1-32) or ( 33-40 grayscale ) }
- clutID: INTEGER; { clut id or if 0 clut follows or -1 if no clut }
- END;
-
- {
- The CodecInfo is the information returned as the codecInfo struct by a codec Component
- to the codec manager or to the caller. It is specific to the particular codec
- implementation and not to the codec type.}
-
- CodecInfo = PACKED RECORD
- typeName: PACKED ARRAY [0..31] OF CHAR;{ name of the codec type i.e.: 'Apple Image Compression' }
- version: INTEGER; { version of the codec data that this codec knows about }
- revisionLevel: INTEGER; { revision level of this codec i.e: 0x00010001 (1.0.1) }
- vendor: LONGINT; { Maker of this codec i.e: 'appl' }
- decompressFlags: LONGINT; { codecInfo flags for decompression capabilities }
- compressFlags: LONGINT; { codecInfo flags for compression capabilities }
- formatFlags: LONGINT; { codecInfo flags for compression format details }
- compressionAccuracy: CHAR; { measure (1-255) of accuracy of this codec for compress (0 if unknown) }
- decompressionAccuracy: CHAR; { measure (1-255) of accuracy of this codec for decompress (0 if unknown) }
- compressionSpeed: INTEGER; { ( millisecs for compressing 320x240 on base mac II) (0 if unknown) }
- decompressionSpeed: INTEGER; { ( millisecs for decompressing 320x240 on mac II)(0 if unknown) }
- compressionLevel: CHAR; { measure (1-255) of compression level of this codec (0 if unknown) }
- resvd: CHAR; { pad }
- minimumHeight: INTEGER; { minimum height of image (block size) }
- minimumWidth: INTEGER; { minimum width of image (block size) }
- decompressPipelineLatency: INTEGER; { in milliseconds ( for asynchronous codecs ) }
- compressPipelineLatency: INTEGER; { in milliseconds ( for asynchronous codecs ) }
- privateData: LONGINT;
- END;
-
- { Name list returned by GetCodecNameList. }
- CodecNameSpec = PACKED RECORD
- codec: CodecComponent;
- cType: CodecType;
- typeName: PACKED ARRAY [0..31] OF CHAR;
- name: Handle;
- END;
-
- CodecNameSpecListPtr = ^CodecNameSpecList;
- CodecNameSpecList = RECORD
- count: INTEGER;
- list: ARRAY [0..0] OF CodecNameSpec;
- END;
-
- { Matrix stuff }
- MatrixRecordPtr = ^MatrixRecord;
- MatrixRecord = RECORD
- matrix: ARRAY [0..2,0..2] OF Fixed;
- END;
-
- FixedPoint = RECORD
- x: Fixed;
- y: Fixed;
- END;
-
- FixedRect = RECORD
- left: Fixed;
- top: Fixed;
- right: Fixed;
- bottom: Fixed;
- END;
-
-
- FUNCTION CodecManagerVersion(VAR version: LONGINT): OSErr;
- INLINE $7000+$0000,$AAA3;
- FUNCTION GetCodecNameList(VAR list: CodecNameSpecListPtr;showAll: INTEGER): OSErr;
- INLINE $7000+$0001,$AAA3;
- FUNCTION DisposeCodecNameList(list: CodecNameSpecListPtr): OSErr;
- INLINE $7000+$000f,$AAA3;
- FUNCTION GetCodecInfo(VAR info: CodecInfo;cType: CodecType;codec: CodecComponent): OSErr;
- INLINE $7000+$0003,$AAA3;
- FUNCTION GetMaxCompressionSize(src: PixMapHandle;srcRect: Rect;colorDepth: INTEGER;
- quality: CodecQ;cType: CodecType;codec: CompressorComponent;VAR size: LONGINT): OSErr;
- INLINE $7000+$0004,$AAA3;
- FUNCTION GetCompressionTime(src: PixMapHandle; srcRect: Rect;colorDepth: INTEGER;
- cType: CodecType;codec: CompressorComponent;VAR spatialQuality: CodecQ;
- VAR temporalQuality: CodecQ;VAR compressTime: LONGINT): OSErr;
- INLINE $7000+$0005,$AAA3;
- FUNCTION CompressImage(src: PixMapHandle; srcRect: Rect;quality: CodecQ;
- cType: CodecType;desc: ImageDescriptionHandle;data: Ptr): OSErr;
- INLINE $7000+$0006,$AAA3;
- FUNCTION FCompressImage(src: PixMapHandle; srcRect: Rect;colorDepth: INTEGER;
- quality: CodecQ;cType: CodecType;codec: CompressorComponent;clut: CTabHandle;
- flags: CodecFlags;bufferSize: LONGINT;flushProc: FlushProcRecordPtr;progressProc: ProgressProcRecordPtr;
- desc: ImageDescriptionHandle;data: Ptr): OSErr;
- INLINE $7000+$0007,$AAA3;
- FUNCTION DecompressImage(data: Ptr;desc: ImageDescriptionHandle;dst: PixMapHandle;
- srcRect: Rect; dstRect: Rect;mode: INTEGER;mask: RgnHandle): OSErr;
- INLINE $7000+$0008,$AAA3;
- FUNCTION FDecompressImage(data: Ptr;desc: ImageDescriptionHandle;dst: PixMapHandle;
- srcRect: Rect;matrix: MatrixRecordPtr;mode: INTEGER;mask: RgnHandle;
- matte: PixMapHandle; matteRect: Rect;accuracy: CodecQ;codec: DecompressorComponent;
- bufferSize: LONGINT;dataProc: DataProcRecordPtr;progressProc: ProgressProcRecordPtr): OSErr;
- INLINE $7000+$0009,$AAA3;
- FUNCTION CompressSequenceBegin(VAR seqID: ImageSequence;src: PixMapHandle;
- prev: PixMapHandle; srcRect: Rect; prevRect: Rect;colorDepth: INTEGER;
- cType: CodecType;codec: CompressorComponent;spatialQuality: CodecQ;temporalQuality: CodecQ;
- keyFrameRate: LONGINT;clut: CTabHandle;flags: CodecFlags;desc: ImageDescriptionHandle): OSErr;
- INLINE $7000+$000A,$AAA3;
- FUNCTION CompressSequenceFrame(seqID: ImageSequence;src: PixMapHandle; srcRect: Rect;
- flags: CodecFlags;data: Ptr;VAR dataSize: LONGINT;VAR similarity: Byte;
- asyncCompletionProc: CompletionProcRecordPtr): OSErr;
- INLINE $206F,$0004,$4250,$52AF,$0004,$7000+$000B,$AAA3;
- FUNCTION DecompressSequenceBegin(VAR seqID: ImageSequence;desc: ImageDescriptionHandle;
- port: CGrafPtr;gdh: GDHandle; srcRect: Rect;matrix: MatrixRecordPtr;
- mode: INTEGER;mask: RgnHandle;flags: CodecFlags;accuracy: CodecQ;codec: DecompressorComponent): OSErr;
- INLINE $7000+$000D,$AAA3;
- FUNCTION DecompressSequenceFrame(seqID: ImageSequence;data: Ptr;inFlags: CodecFlags;
- VAR outFlags: CodecFlags;asyncCompletionProc: CompletionProcRecordPtr): OSErr;
- INLINE $7000+$000E,$AAA3;
- FUNCTION SetDSequenceMatrix(seqID: ImageSequence;matrix: MatrixRecordPtr): OSErr;
- INLINE $7000+$0010,$AAA3;
- FUNCTION SetDSequenceMatte(seqID: ImageSequence;matte: PixMapHandle; matteRect: Rect): OSErr;
- INLINE $7000+$0011,$AAA3;
- FUNCTION SetDSequenceMask(seqID: ImageSequence;mask: RgnHandle): OSErr;
- INLINE $7000+$0012,$AAA3;
- FUNCTION SetDSequenceTransferMode(seqID: ImageSequence;mode: INTEGER; opColor: RGBColor): OSErr;
- INLINE $7000+$0013,$AAA3;
- FUNCTION SetDSequenceDataProc(seqID: ImageSequence;dataProc: DataProcRecordPtr;
- bufferSize: LONGINT): OSErr;
- INLINE $7000+$0014,$AAA3;
- FUNCTION SetDSequenceAccuracy(seqID: ImageSequence;accuracy: CodecQ): OSErr;
- INLINE $7000+$0034,$AAA3;
- FUNCTION SetDSequenceSrcRect(seqID: ImageSequence; srcRect: Rect): OSErr;
- INLINE $7000+$0035,$AAA3;
- FUNCTION GetDSequenceImageBuffer(seqID: ImageSequence;VAR gworld: GWorldPtr): OSErr;
- INLINE $7000+$0015,$AAA3;
- FUNCTION GetDSequenceScreenBuffer(seqID: ImageSequence;VAR gworld: GWorldPtr): OSErr;
- INLINE $7000+$0016,$AAA3;
- FUNCTION SetCSequenceQuality(seqID: ImageSequence;spatialQuality: CodecQ;
- temporalQuality: CodecQ): OSErr;
- INLINE $7000+$0017,$AAA3;
- FUNCTION SetCSequencePrev(seqID: ImageSequence;prev: PixMapHandle; prevRect: Rect): OSErr;
- INLINE $7000+$0018,$AAA3;
- FUNCTION SetCSequenceFlushProc(seqID: ImageSequence;flushProc: FlushProcRecordPtr;
- bufferSize: LONGINT): OSErr;
- INLINE $7000+$0033,$AAA3;
- FUNCTION SetCSequenceKeyFrameRate(seqID: ImageSequence;keyframerate: LONGINT): OSErr;
- INLINE $7000+$0036,$AAA3;
- FUNCTION GetCSequenceKeyFrameRate(seqID: ImageSequence; VAR keyframerate: LONGINT): OSErr;
- INLINE $203C,12,75,$AAA3;
- FUNCTION GetCSequencePrevBuffer(seqID: ImageSequence;VAR gworld: GWorldPtr): OSErr;
- INLINE $7000+$0019,$AAA3;
- FUNCTION CDSequenceBusy(seqID: ImageSequence): OSErr;
- INLINE $7000+$001A,$AAA3;
- FUNCTION CDSequenceEnd(seqID: ImageSequence): OSErr;
- INLINE $7000+$001B,$AAA3;
- FUNCTION GetCompressedImageSize(desc: ImageDescriptionHandle;data: Ptr;
- bufferSize: LONGINT;dataProc: DataProcRecordPtr;VAR dataSize: LONGINT): OSErr;
- INLINE $7000+$001C,$AAA3;
- FUNCTION GetSimilarity(src: PixMapHandle; srcRect: Rect;desc: ImageDescriptionHandle;
- data: Ptr;VAR similarity: Fixed): OSErr;
- INLINE $7000+$001D,$AAA3;
- FUNCTION GetImageDescriptionCTable(desc: ImageDescriptionHandle;VAR ctable: CTabHandle): OSErr;
- INLINE $7000+$001E,$AAA3;
- FUNCTION SetImageDescriptionCTable(desc: ImageDescriptionHandle;ctable: CTabHandle): OSErr;
- INLINE $7000+$001F,$AAA3;
- FUNCTION GetImageDescriptionExtension(desc: ImageDescriptionHandle;VAR extension: Handle;
- idType: LONGINT;index: LONGINT): OSErr;
- INLINE $7000+$0020,$AAA3;
- FUNCTION SetImageDescriptionExtension(desc: ImageDescriptionHandle;extension: Handle;
- idType: LONGINT): OSErr;
- INLINE $7000+$0021,$AAA3;
- FUNCTION RemoveImageDescriptionExtension(desc: ImageDescriptionHandle; idType: LONGINT; index: LONGINT): OSErr;
- INLINE $203C,12,$003A,$AAA3;
- FUNCTION CountImageDescriptionExtensionType(desc: ImageDescriptionHandle; idType: LONGINT; VAR count: LONGINT): OSErr;
- INLINE $203C,12,$003B,$AAA3;
- FUNCTION GetNextImageDescriptionExtensionType(desc: ImageDescriptionHandle; VAR idType: LONGINT): OSErr;
- INLINE $203C,8,$003C,$AAA3;
- FUNCTION FindCodec(cType: CodecType;specCodec: CodecComponent;VAR compressor: CompressorComponent;
- VAR decompressor: DecompressorComponent): OSErr;
- INLINE $7000+$0023,$AAA3;
- FUNCTION CompressPicture(srcPicture: PicHandle;dstPicture: PicHandle;quality: CodecQ;
- cType: CodecType): OSErr;
- INLINE $7000+$0024,$AAA3;
- FUNCTION FCompressPicture(srcPicture: PicHandle;dstPicture: PicHandle;colorDepth: INTEGER;
- clut: CTabHandle;quality: CodecQ;doDither: INTEGER;compressAgain: INTEGER;
- progressProc: ProgressProcRecordPtr;cType: CodecType;codec: CompressorComponent): OSErr;
- INLINE $7000+$0025,$AAA3;
- FUNCTION CompressPictureFile(srcRefNum: INTEGER;dstRefNum: INTEGER;quality: CodecQ;
- cType: CodecType): OSErr;
- INLINE $7000+$0026,$AAA3;
- FUNCTION FCompressPictureFile(srcRefNum: INTEGER;dstRefNum: INTEGER;colorDepth: INTEGER;
- clut: CTabHandle;quality: CodecQ;doDither: INTEGER;compressAgain: INTEGER;
- progressProc: ProgressProcRecordPtr;cType: CodecType;codec: CompressorComponent): OSErr;
- INLINE $7000+$0027,$AAA3;
- FUNCTION GetPictureFileHeader(refNum: INTEGER;VAR frame: Rect;VAR header: OpenCPicParams): OSErr;
- INLINE $7000+$0028,$AAA3;
- FUNCTION DrawPictureFile(refNum: INTEGER; frame: Rect;progressProc: ProgressProcRecordPtr): OSErr;
- INLINE $7000+$0029,$AAA3;
- FUNCTION DrawTrimmedPicture(srcPicture: PicHandle; frame: Rect;trimMask: RgnHandle;
- doDither: INTEGER;progressProc: ProgressProcRecordPtr): OSErr;
- INLINE $7000+$002E,$AAA3;
- FUNCTION DrawTrimmedPictureFile(srcRefnum: INTEGER; frame: Rect;trimMask: RgnHandle;
- doDither: INTEGER;progressProc: ProgressProcRecordPtr): OSErr;
- INLINE $7000+$002F,$AAA3;
- FUNCTION MakeThumbnailFromPicture(picture: PicHandle;colorDepth: INTEGER;
- thumbnail: PicHandle;progressProc: ProgressProcRecordPtr): OSErr;
- INLINE $7000+$002A,$AAA3;
- FUNCTION MakeThumbnailFromPictureFile(refNum: INTEGER;colorDepth: INTEGER;
- thumbnail: PicHandle;progressProc: ProgressProcRecordPtr): OSErr;
- INLINE $7000+$002B,$AAA3;
- FUNCTION MakeThumbnailFromPixMap(src: PixMapHandle; srcRect: Rect;colorDepth: INTEGER;
- thumbnail: PicHandle;progressProc: ProgressProcRecordPtr): OSErr;
- INLINE $7000+$002C,$AAA3;
- FUNCTION TrimImage(desc: ImageDescriptionHandle;inData: Ptr;inBufferSize: LONGINT;
- dataProc: DataProcRecordPtr;outData: Ptr;outBufferSize: LONGINT;flushProc: FlushProcRecordPtr;
- VAR trimRect: Rect;progressProc: ProgressProcRecordPtr): OSErr;
- INLINE $7000+$002D,$AAA3;
- FUNCTION ConvertImage(srcDD: ImageDescriptionHandle;srcData: Ptr;colorDepth: INTEGER;
- clut: CTabHandle;accuracy: CodecQ;quality: CodecQ;cType: CodecType;codec: CodecComponent;
- dstDD: ImageDescriptionHandle;dstData: Ptr): OSErr;
- INLINE $7000+$0030,$AAA3;
- FUNCTION StdPix( src: PixMapPtr; srcRect :Rect; matrix : MatrixRecordPtr; mode : INTEGER;
- mask: RgnHandle ; matte: PixMapPtr; matteRect: Rect; flags : INTEGER ) : OSErr;
- INLINE $7000+$000C,$AAA3;
-
- FUNCTION GetCompressedPixMapInfo(pix: PixMapPtr;VAR desc: ImageDescriptionHandle;
- VAR data: Ptr;VAR bufferSize: LONGINT;VAR dataProc: DataProcRecord;VAR progressProc: ProgressProcRecord): OSErr;
- INLINE $7000+$0037,$AAA3;
- FUNCTION SetCompressedPixMapInfo(pix: PixMapPtr;desc: ImageDescriptionHandle;
- data: Ptr;bufferSize: LONGINT;dataProc: DataProcRecordPtr;progressProc: ProgressProcRecordPtr): OSErr;
- INLINE $7000+$0038,$AAA3;
-
- PROCEDURE AlignScreenRect(VAR rp: Rect);
- INLINE $203C,4,76,$AAA3;
- PROCEDURE AlignWindow(wp: WindowPtr; alignmentRect: Rect; front: Boolean);
- INLINE $203C,10,77,$AAA3;
- PROCEDURE DragAlignedWindow(wp: WindowPtr; startPt: Point; boundsRect: Rect; alignmentRect: Rect);
- INLINE $203C,16,78,$AAA3;
- FUNCTION DragAlignedGrayRgn(theRgn: RgnHandle; startPt: Point; boundsRect: Rect;
- slopRect: Rect; axis: INTEGER; actionProc: ProcPtr; alignmentRect: RectPtr): LONGINT;
- INLINE $203C,26,79,$AAA3;
-
- FUNCTION SetCSequenceDataRateParams(seqID: ImageSequence; params: DataRateParamsPtr): OSErr;
- INLINE $203C,8,80,$AAA3;
- FUNCTION SetCSequenceFrameNumber(seqID: ImageSequence; frameNumber: LONGINT): OSErr;
- INLINE $203C,8,81,$AAA3;
- FUNCTION NewImageGWorld(VAR gworld: GWorldPtr; idh: ImageDescriptionHandle; flags GWorldFlags): OSErr;
- INLINE $203C,12,82,$AAA3;
- FUNCTION GetCSequenceDataRateParams(seqID: ImageSequence; params: DataRateParamsPtr): OSErr;
- INLINE $203C,8,83,$AAA3;
- FUNCTION GetCSequenceFrameNumber(seqID: ImageSequence; VAR frameNumber: LONGINT): OSErr;
- INLINE $203C,8,84,$AAA3;
- FUNCTION GetBestDeviceRect(VAR gdh: GDHandle; rp: RectPtr): OSErr;
- INLINE $203C,8,85,$AAA3;
-
-
- CONST
- identityMatrixType = $00; { result if matrix is identity }
- translateMatrixType = $01; { result if matrix translates }
- scaleMatrixType = $02; { result if matrix scales }
- scaleTranslateMatrixType = $03; { result if matrix scales and translates }
- linearMatrixType = $04; { result if matrix is general 2 x 2 }
- linearTranslateMatrixType = $05; { result if matrix is general 2 x 2 and translates }
- perspectiveMatrixType = $06; { result if matrix is general 3 x 3 }
-
-
- FUNCTION GetMatrixType( m: MatrixRecord): INTEGER;
- INLINE $7014,$ABC2;
- PROCEDURE CopyMatrix(m1: MatrixRecord;VAR m2: MatrixRecord);
- INLINE $7020,$ABC2;
- FUNCTION EqualMatrix(m1: MatrixRecord; m2: MatrixRecord): BOOLEAN;
- INLINE $7021,$ABC2;
- PROCEDURE SetIdentityMatrix(VAR matrix: MatrixRecord);
- INLINE $7015,$ABC2;
- PROCEDURE TranslateMatrix(VAR m: MatrixRecord;deltaH: Fixed;deltaV: Fixed);
- INLINE $7019,$ABC2;
- PROCEDURE RotateMatrix(VAR m: MatrixRecord;degrees: Fixed;aboutX: Fixed;
- aboutY: Fixed);
- INLINE $7016,$ABC2;
- PROCEDURE ScaleMatrix(VAR m: MatrixRecord;scaleX: Fixed;scaleY: Fixed;aboutX: Fixed;
- aboutY: Fixed);
- INLINE $7017,$ABC2;
- PROCEDURE SkewMatrix(VAR m: MatrixRecord;skewX: Fixed;skewY: Fixed;aboutX: Fixed;
- aboutY: Fixed);
- INLINE $7018,$ABC2;
- FUNCTION TransformFixedPoints( m: MatrixRecord;VAR fpt: FixedPoint;count: LONGINT): OSErr;
- INLINE $7022,$ABC2;
- FUNCTION TransformPoints( mp: MatrixRecord;VAR pt1: Point;count: LONGINT): OSErr;
- INLINE $7023,$ABC2;
- FUNCTION TransformFixedRect( m: MatrixRecord;VAR fr: FixedRect;VAR fpp: FixedPoint): BOOLEAN;
- INLINE $7024,$ABC2;
- FUNCTION TransformRect( m: MatrixRecord;VAR r: Rect;VAR fpp: FixedPoint): BOOLEAN;
- INLINE $7025,$ABC2;
- FUNCTION TransformRgn( mp: MatrixRecord;r: RgnHandle): OSErr;
- INLINE $7000+$0039,$AAA3;
- FUNCTION InverseMatrix(m: MatrixRecord; VAR im: MatrixRecord): BOOLEAN;
- INLINE $701C,$ABC2;
- PROCEDURE ConcatMatrix(a: MatrixRecord;VAR b: MatrixRecord);
- INLINE $701B,$ABC2;
- PROCEDURE RectMatrix(VAR matrix: MatrixRecord; srcRect: Rect; dstRect: Rect);
- INLINE $701E,$ABC2;
- PROCEDURE MapMatrix(VAR matrix: MatrixRecord; fromRect: Rect; toRect: Rect);
- INLINE $701D,$ABC2;
-
- { Standard Preview }
-
- PROCEDURE SFGetFilePreview(where: Point;
- prompt: Str255;
- fileFilter: FileFilterProcPtr;
- numTypes: INTEGER;
- typeList: SFTypeList;
- dlgHook: DlgHookProcPtr;
- VAR reply: SFReply);
- INLINE $303C,65,$AAA3;
-
- PROCEDURE SFPGetFilePreview(where: Point;
- prompt: Str255;
- fileFilter: FileFilterProcPtr;
- numTypes: INTEGER;
- typeList: SFTypeList;
- dlgHook: DlgHookProcPtr;
- VAR reply: SFReply;
- dlgID: INTEGER;
- filterProc: ModalFilterProcPtr);
- INLINE $303C,66,$AAA3;
-
- PROCEDURE StandardGetFilePreview(fileFilter: FileFilterProcPtr;
- numTypes: INTEGER;
- typeList: SFTypeList;
- VAR reply: StandardFileReply);
- INLINE $303C,67,$AAA3;
-
- PROCEDURE CustomGetFilePreview(fileFilter: FileFilterYDProcPtr;
- numTypes: INTEGER;
- typeList: SFTypeList;
- VAR reply: StandardFileReply;
- dlgID: INTEGER;
- where: Point;
- dlgHook: DlgHookYDProcPtr;
- filterProc: ModalFilterYDProcPtr;
- activeList: Ptr;
- activateProc: ActivateYDProcPtr;
- yourDataPtr: UNIV Ptr);
- INLINE $303C,68,$AAA3;
-
- FUNCTION MakeFilePreview(resRefNum: INTEGER; progress: ProgressProcRecordPtr): OSErr;
- INLINE $303C,69,$AAA3;
-
- FUNCTION AddFilePreview(resRefNum: INTEGER; previewType: OSType; previewData: Handle): OSErr;
- INLINE $303C,70,$AAA3;
-
- CONST
- sfpItemPreviewAreaUser = 11;
- sfpItemPreviewStaticText = 12;
- sfpItemPreviewDividerUser = 13;
- sfpItemCreatePreviewButton = 14;
- sfpItemShowPreviewButton = 15;
-
- TYPE
-
- PreviewResourcePtr = ^PreviewResourceRecord;
- PreviewResourceHandle = ^PreviewResourcePtr;
- PreviewResourceRecord = RECORD
- modDate : LONGINT;
- version : INTEGER;
- resType : OSType;
- resID : INTEGER;
- END;
-
- {$ENDC} { UsingImageCompression }
-
- {$IFC NOT UsingIncludes}
- END.
- {$ENDC}
-